#include "VistasFactory.h"
#include "../vista/VistaHuevo.h"
#include "../vista/VistaHuevoNegro.h"
#include "../vista/VistaCaja.h"
#include "../vista/VistaCajaMetal.h"
#include "../vista/VistaManzana.h"
#include "../vista/VistaBanana.h"
#include "../vista/VistaPiso.h"
#include "../vista/VistaFondo.h"
#include "../vista/VistaFondo2.h"
#include "../vista/VistaFondoSimpsons.h"
#include "../vista/VistaCatapulta.h"
#include "../vista/VistaCerdo.h"
#include "../vista/VistaNido.h"
#include "../vista/VistaPajaro.h"
#include "../vista/VistaPollo.h"
#include "../vista/VistaCuervo.h"
#include "../vista/VistaMonticulo.h"
#include "../vista/VistaReloj.h"
#include "./Objetos/Dinamicos/Huevo.h"
#include "./Objetos/Dinamicos/HuevoNegro.h"
#include "./Objetos/Dinamicos/Pajaro.h"
#include "../modelo/Objetos/Dinamicos/Pollo.h"
#include "../modelo/Objetos/Dinamicos/Cuervo.h"
#include "./Objetos/Estaticos/Caja.h"
#include "../modelo/Objetos/Estaticos/CajaMetal.h"
#include "./Objetos/Estaticos/Manzana.h"
#include "./Objetos/Estaticos/Banana.h"
#include "./Objetos/Estaticos/Nido.h"
#include "./Objetos/Estaticos/Piso.h"
#include "./Objetos/Estaticos/Fondo.h"
#include "../modelo/Objetos/Estaticos/Fondo2.h"
#include "../modelo/Objetos/Estaticos/FondoSimpsons.h"
#include "./Objetos/Estaticos/Cerdo.h"
#include "./Objetos/Estaticos/Catapulta.h"
#include "./Objetos/Estaticos/Monticulo.h"
#include "./Objetos/Estaticos/Reloj.h"
#include <typeinfo>  //for 'typeid'

VistasFactory *VistasFactory::factory = NULL;
VistasFactory *VistasFactory::get() {
	if (factory == NULL) {
		factory = new VistasFactory();
	}
	return factory;
}
VistasFactory::VistasFactory()
{
}

VistasFactory::~VistasFactory()
{
}

Vista *VistasFactory::crearVista(Objeto *obj) {

	if (typeid(*obj) == typeid(Huevo)){
		return new VistaHuevo(obj);
	}
	if (typeid(*obj) == typeid(HuevoNegro)){
		return new VistaHuevoNegro(obj);
	}
	if (typeid(*obj) == typeid(Caja)){
		return new VistaCaja(obj);
	}
	if (typeid(*obj) == typeid(CajaMetal)){
		return new VistaCajaMetal(obj);
	}
	if (typeid(*obj) == typeid(Manzana)){
		return new VistaManzana(obj);
	}
	if (typeid(*obj) == typeid(Banana)){
		return new VistaBanana(obj);
	}
	if (typeid(*obj) == typeid(Piso)){
		return new VistaPiso(obj);
	}
	if (typeid(*obj) == typeid(Fondo)){
		return new VistaFondo(obj);
	}
	if (typeid(*obj) == typeid(Fondo2)){
		return new VistaFondo2(obj);
	}
	if (typeid(*obj) == typeid(FondoSimpsons)){
		return new VistaFondoSimpsons(obj);
	}
	if (typeid(*obj) == typeid(Cerdo)){
		return new VistaCerdo(obj);
	}
	if (typeid(*obj) == typeid(Catapulta)){
		return new VistaCatapulta(obj);
	}
	if (typeid(*obj) == typeid(Nido)){
		return new VistaNido(obj);
	}
	if (typeid(*obj) == typeid(Pajaro)){
		return new VistaPajaro(obj);
	}
	if (typeid(*obj) == typeid(Cuervo)){
		return new VistaCuervo(obj);
	}
	if (typeid(*obj) == typeid(Pollo)){
		return new VistaPollo(obj);
	}
	if (typeid(*obj) == typeid(Monticulo)){
		return new VistaMonticulo(obj);
	}
	if (typeid(*obj) == typeid(Reloj)){
		return new VistaReloj(obj);
	}
	return 0;
}
